a = 1
print(a)
# str1 = 'abc # 语法错误

# 六大常见的异常
# ZeroDivisionError 除零异常
# print(10/0)

# NameError 名称异常
# 变量、函数未定义就使用
# print(i)

# TypeError 类型异常
# print(10+"分") # 在python中int不能跟字符串直接相加

# ValueError 值异常
print(int("123"))
# print(int("abc"))

# IndexError 索引异常
list1 = [1, 2, 3]
print(list1[0])
print(list1[1])
print(list1[2])
# print(list1[3])

# AttributeError 属性异常
str1 = 'abcdef'
# str1.xxxx


# 异常处理
'''
try:
    可能会发生异常的代码
    可能会发生异常的代码
    可能会发生异常的代码
except 异常1:
    异常1发生了该怎么办
except 异常2:
    异常2发生了该怎么办
......
else:
    没有发生异常就会执行
finally:
    不管有没有发生异常都会执行   
'''

try:
    print("start")
    print(10 / 0)
    print("end")
# except Exception as e:
#     print(e)
except ZeroDivisionError as e:
    print(e)
    print("请检查除数")
except ValueError as e:
    print(e)
    print("如果发生了值异常该怎么处理")
else:
    print("没有发生异常就会执行")
finally:
    print("不管有没有发生异常都会执行")


# 自定义异常
class AlienError(Exception):
    pass


age = int(input("请输入一个年龄："))
# 判断是否成年
# 如果年龄不在0~200范围内直接抛出外星人异常
try:
    if age < 0 or age > 200:
        # print("年龄不符合规范")
        raise AlienError("发生了外星人异常")
    elif age >= 18:
        print("成年")
    elif age < 18:
        print("未成年")
except AlienError as e:
    print("捕获到了AlienError异常")
    print(e)
